const { defineConfig } = require("@vue/cli-service");
const CompressionPlugin = require("compression-webpack-plugin");
module.exports = defineConfig({
  // 基本路径
  publicPath: process.env.NODE_ENV === "production" ? "./" : "/",

  // 输出文件目录
  outputDir: "dist",

  // 静态资源目录
  assetsDir: "static",

  // 是否在开发环境下使用 eslint-loader
  // lintOnSave: process.env.NODE_ENV !== "production",
  lintOnSave: false,

  // 生产环境 source map
  productionSourceMap: false,

  // webpack 配置
  configureWebpack: {
    plugins: [
      // gzip压缩
      new CompressionPlugin({
        algorithm: "gzip", // 使用gzip压缩
        test: /\.js$|\.html$|\.mp4$|\.*$|\.css$/, // 匹配文件名
        filename: "[path][base].gz[query]", // 压缩后的文件名(保持原文件名，后缀加.gz)
        minRatio: 1, // 压缩率小于1才会压缩
        threshold: 10240, // 对超过10k的数据压缩
        deleteOriginalAssets: false, // 是否删除未压缩的源文件，谨慎设置，如果希望提供非gzip的资源，可不设置或者设置为false（比如删除打包后的gz后还可以加载到原始资源文件）
      })
    ],
    // 配置自定义模块解析规则
    resolve: {
      alias: {
        "@": require("path").resolve(__dirname, "src"),
      },
    },
  },
  /* // 修改Html标题
  chainWebpack: (config) => {
    config.plugin("html").tap((args) => {
      args[0].title = "goldzip_oa";
      return args;
    });
  }, */

  // 开发服务器配置
  devServer: {
    // 启用热模块替换
    hot: true,
    // 启用 https
    https: false,
    // 本地地址访问
    host: "0.0.0.0",
    // 5000端口
    port: 4000,
    // 配置代理
    proxy: {
      "/api": {
        target: "http://localhost:4000", // 后端接口地址
        changeOrigin: true, // 是否跨域
        pathRewrite: {
          "^/api": "", // 重写接口
        },
      },
    },
  },

  transpileDependencies: true,
});
